100 REM  TI(EX)-RAINBOW SQUARE DANCE
110 UNTRACE
120 REM  BY N.BENHAM
130 REM  18/2/84
140 CALL CLEAR
150 GOSUB 800
160 CALL CLEAR
170 RANDOMIZE
180 GOTO 720
190 REM  SCREEN*****
200 FOR A1=1 TO 5
210 FOR A2=1 TO 5
220 COLOR(A1,A2)=10*A1+90
230 CALL HCHAR(8+A1,11+A2,COLOR(A1,A2))
240 NEXT A2
250 NEXT A1
260 J$="FFFFFFFFFFFFFFFF"
270 FOR A=1 TO 5 :: CALL CHAR(10*A+90,J$) :: NEXT A
280 CALL COLOR(9,16,1)
290 CALL COLOR(10,12,1)
300 CALL COLOR(12,10,1)
310 CALL COLOR(13,13,1)
320 CALL COLOR(14,5,1)
330 FOR T=1 TO 5
340 CALL HCHAR(8+T,11,ASC(STR$(T))) :: NEXT T
350 DISPLAY AT(14,10):"67890"
360 RETURN
370 REM  RANDOMIZE*******
380 FOR T=1 TO 25
390 K=INT(RND*10+48)
400 GOSUB 440
410 NEXT T
420 RETURN
430 REM  MOVE************
440 ON(K-47)GOSUB 620,630,640,650,660,670,680,690,700,710
450 IF ROW<>0 THEN 540
460 FOR A=5 TO 1 STEP-1
470 COLOR(A+1,COLUMN)=COLOR(A,COLUMN)
480 NEXT A
490 COLOR(1,COLUMN)=COLOR(6,COLUMN)
500 FOR A=1 TO 5
510 CALL HCHAR(8+A,11+COLUMN,COLOR(A,COLUMN))
520 NEXT A
530 RETURN
540 FOR A=5 TO 1 STEP-1
550 COLOR(ROW,A+1)=COLOR(ROW,A)
560 NEXT A
570 COLOR(ROW,1)=COLOR(ROW,6)
580 FOR A=1 TO 5
590 CALL HCHAR(8+ROW,11+A,COLOR(ROW,A))
600 NEXT A
610 RETURN
620 ROW=0 :: COLUMN=5 :: RETURN
630 ROW=1 :: COLUMN=0 :: RETURN
640 ROW=2 :: COLUMN=0 :: RETURN
650 ROW=3 :: COLUMN=0 :: RETURN
660 ROW=4 :: COLUMN=0 :: RETURN
670 ROW=5 :: COLUMN=0 :: RETURN
680 ROW=0 :: COLUMN=1 :: RETURN
690 ROW=0 :: COLUMN=2 :: RETURN
700 ROW=0 :: COLUMN=3 :: RETURN
710 ROW=0 :: COLUMN=4 :: RETURN
720 REM  MAIN PROGRAM******
730 GOSUB 200
740 GOSUB 380
750 CALL KEY(5,K,S)
760 IF S=0 OR K<48 OR K>57 THEN 750
770 GOSUB 440
780 GOTO 750
790 END
800 REM  INSTRUCTIONS*******
810 PRINT "*******************************RAINBOW SQUARE DANCE*********************************                                             "
820 PRINT "                                                                                                                                 "
830 INPUT "INSTRUCTIONS (Y/N)":C$
840 IF C$="Y" THEN 850 ELSE 160
850 CALL CLEAR
860 PRINT "***RAINBOW SQUARE DANCE****"
870 PRINT "A TWO-DIMENSIONAL CUBE?     IMPOSSIBLE OF COURSE , BUT  THIS GAME , PLAYED ON THE   COMPUTER SCREEN,IS SIMILAR "
880 PRINT "IN MANY WAYS TO RUBIK'S CUBE."
890 PRINT ""
900 FOR ZZ=1 TO 1000 :: NEXT ZZ
910 CALL CLEAR
920 PRINT "YOU WILL SEE 25 COLORED     SQUARES ARRANGED AT RANDOM  ON A 5*5 BOARD.THE ROWS OF  SQUARES ON THE BOARD ARE    NUMBERED."
930 PRINT "THAT IS,THE HORIZONTAL ROWS ARE NUMBERED 1 TO 5 AND THE VERTICAL ROWS 6,7,8,9 AND 0.WHEN YOU ENTER THE NUMBER OF"
940 PRINT "A ROW,THE SQUARES IN THAT   ROW ARE MOVED ONE POSITION. IN A HORIZONTAL ROW THE     SQUARES MOVE TO THE RIGHT,"
950 PRINT "AND IN A VERTICAL ROW THEY  MOVE DOWNWARDS.AS A SQUARE  DISAPPEARS OFF ONE END OF A ROW IT REAPPEARS AT THE     OTHER END"
960 INPUT "PRESS ENTER":NUL$
970 CALL CLEAR
980 PRINT "THE OBJECT OF ALL THIS ???                             " :: FOR XX=1 TO 500 :: NEXT XX
990 PRINT "YOU MUST REARRANGE THE      SQUARES TO FORM FIVE        HORIZONTAL STRIPES OF ONE   COLOUR EACH." :: FOR S=1 TO 300 :: NEXT S
1000 PRINT "                            SOUNDS SIMPLE..............BUT IS IT.                                                 GOOD LUCK!!!"
1010 INPUT "                            PRESS ENTER":NUL$
1020 CALL CLEAR
1030 INPUT "DO YOU WANT THE INSTRUCTIONSAGAIN(Y/N)":A$
1040 IF A$="Y" THEN 910 ELSE 150
1050 RETURN
